No teatro do C++, cada objeto tem uma duração—o tempo de vida do objeto. Isso define a duração durante a qual um objeto ocupa espaço na memória. Dentro de um corpo da função, o comportamento padrão para variáveis locais é ser automático, mas podemos comandá-los a serem estáticos para mudar seu destino.
1. Objetos Automáticos
Por padrão, as variáveis locais são objetos automáticos. Elas nascem (inicializadas) quando a função execução atinge sua definição e morrem (são recuperadas) quando o bloco termina. Elas residem na pilha, tornando-as frescas em cada chamada.
2. Objetos Estáticos Locais
Quando você usa a estáticos palavra-chave, você cria um objeto estático local. Elas são inicializadas apenas uma vez—antes da primeira vez que o controle passa por sua definição—e permanecem vivas até o término do programa. Isso permite que uma função "lembre" de seu estado sem poluir o escopo global.
3. A Armadilha da Recursão
Em uma função recursiva, cada loop de recursão cria uma instância distinta de seus objetos automáticos. Se a recursão for profunda, isso consome espaço significativo na pilha. Por outro lado, um estáticos objeto é compartilhado em todos os níveis dessa recursão.